package com.hina.rec.endpoint.req.system;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 角色创建请求
 *
 * @author liaosp
 * @date 2024-01-10
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "角色创建请求")
public class RoleSaveReq {

    /**
     * 角色编码（唯一），例如：admin、user
     */
    @Schema(description = "角色编码（唯一），例如：admin、user", required = true)
    @NotBlank(message = "角色编码不能为空")
    private String roleCode;

    /**
     * 角色名称，例如：系统管理员
     */
    @Schema(description = "角色名称，例如：系统管理员", required = true)
    @NotBlank(message = "角色名称不能为空")
    private String roleName;

    /**
     * 角色状态(0停用，1启用)
     */
    @Schema(description = "角色状态(0停用，1启用)", required = true)
    @NotNull(message = "角色状态不能为空")
    private Boolean status;

    /**
     * 显示顺序，越小越靠前
     */
    @Schema(description = "显示顺序，越小越靠前", required = true)
    @NotNull(message = "显示顺序不能为空")
    private Integer sort;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;


    /**
     * 菜单ID列表
     */
    @Schema(description = "菜单ID列表", required = true)
    @NotEmpty(message = "菜单ID列表不能为空")
    private List<Integer> menuIds;
}